package com.qf.controller;

import com.qf.pojo.TbUser;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * Created by 54110 on 2021/6/22.
 */

@RestController //@ResponseBody+@Controller
public class FirstMvcController {



    //标注放回的内容不再是 页面的名称了，而是Json数据
    @RequestMapping("/first")
    public String first(){
        System.out.println("111");
        return "index";
    }

    /**
     * 1.接受请求的方式
     * 直接写参数类型以及参数名，应对与get方式请求。参数拼接再url上 例如：
     * http://localhost:8080/paramter?id=1&name=123321
     * 前端的url路径中的参数名与接口的参数名保持一致
     * @param id
     * @param name
     * @return
     */
    @RequestMapping("/paramter")
    public String paramter(Integer id,String name){
        System.out.println(id);
        System.out.println(name);
        return "Ok";
    }

    /**
     * @RequestParam 声明了 前端传入参数的名称 将参数赋值到自己定义的类型上 例如：
     * http://localhost:8080/paramter?ids=1&names=123321
     * @param id
     * @param name
     * @return
     */
    @RequestMapping("/paramterSecond")
    public String paramterSecond(@RequestParam("ids")Integer id,@RequestParam("names")String name){
        System.out.println(id);
        System.out.println(name);
        return "ok";
    }

    /**
     *当使用对象来进行接受时，会自动将请求的参数封装到对象中 例如:
     * http://localhost:8080/paramterModel?id=1&userName=zhangsan
     * @param tbUser
     * @return
     */
    @RequestMapping("/paramterModel")
    public String paramterModel(TbUser tbUser){
        System.out.println(tbUser);
        return "ok";
    }

    /**
     * 路径传参
     * @PathVariable 接受跟在路径后的参数 注意 不再是以?进行分割而是 / 例如：
     * http://localhost:8080/paramterPathVariable/1/123
     * @param id
     * @param name
     * @return
     */
    @RequestMapping("/paramterPathVariable/{id}/{name}")
    public String paramterPathvaribal(@PathVariable("id")Integer id,@PathVariable("name")String name){
        System.out.println(id);
        System.out.println(name);
        return "ok";
    }

    /**
     * 接受json格式，转为你当前参数中的类型，可以用对象，也可以用Map进行接受 例如：
     * {
     *
     *  "id":id,
     *  "name":name
     * }
     * @param map
     * @return
     */
    @RequestMapping("/paramterjson")
    public String paramterjson(@RequestBody Map map){
        System.out.println(map.get("id"));
        System.out.println(map.get("name"));
        return "ok";
    }

    /**
     * 使用@RequestBody 接受json的请求参数，封装到对象中，注意：请求得json的key值要与对象中的属性值保持一致
     * @param tbUser
     * @return
     */
    @RequestMapping("/paramterjsonModel")
    public String paramterjsonModel(@RequestBody TbUser tbUser){
        System.out.println(tbUser.getId());
        System.out.println(tbUser.getUserName());
        return "ok";
    }

    /**
     * 通过@CookieValue 获取设置到cookie中的参数
     * @param token
     * @return
     */
    @RequestMapping("/paramterCookie")
    public String paramterCookie(@CookieValue("JSESSIONID")String token){
        System.out.println(token);
        return "ok";
    }
}
